package com.xty.subject.concrereSubject;

import com.xty.observer.Observer;
import com.xty.subject.Subject;
import lombok.extern.slf4j.Slf4j;

import java.util.Vector;

/**
 * Created By IntelliJ IDEA
 *
 * @author 许腾洋
 */
@Slf4j
public class ConcrereSubject implements Subject {
    public Vector<Observer> vector = new Vector<>();

    /**
     * 增加订阅者(观察者)
     *
     * @param observer 观察者
     */
    @Override
    public void attach(Observer observer) {
        if (!vector.contains(observer)) {
            vector.add(observer);
        } else {
            log.info("该观察者已经存在："+observer);
        }

    }

    /**
     * 删除订阅者(观察者)
     *
     * @param observer 观察者
     */
    @Override
    public void detach(Observer observer) {
        vector.remove(observer);
    }

    /**
     * 通知订阅者(观察者)更新消息
     *
     * @param message 被观察者消息
     */
    @Override
    public void notify(String message) {
        for (Observer observer : vector) {
            observer.updata(message);
        }
    }

    /**
     * 被观察者自身业务操作
     */
    @Override
    public void operation() {
    }
}
